package com.ruoyi.post.domain;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 帖子评论信息对象 post_comment_info
 *
 * @author 区嘉盛
 * @date 2025-06-10
 */
@Schema(description = "帖子评论信息对象")
public class PostCommentInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 自增ID */
    @Schema(title = "自增ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 评论编码 */
    @Schema(title = "评论编码")
    private String commentCode;

    /** 帖子ID */
    @Schema(title = "帖子ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long postId;

    /** 评论用户ID */
    @Schema(title = "评论用户ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long commenterUserId;

    /** 父评论ID */
    @Schema(title = "父评论ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long parentCommentId;

    /** 回复目标用户ID */
    @Schema(title = "回复目标用户ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long replyToUserId;

    /** 评论内容 */
    @Schema(title = "评论内容")
    private String commentContent;

    /** 评论点赞数量 */
    @Schema(title = "评论点赞数量")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long likeCount;

    /** 是否草稿 0-否 1-是 */
    @Schema(title = "是否草稿")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long isDraft;

    /** AI审核状态 0-待审核 1-通过 2-拒绝 */
    @Schema(title = "AI审核状态")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long aiAuditStatus;

    /** AI审核拒绝原因 */
    @Schema(title = "AI审核拒绝原因")
    private String aiAuditReason;

    /** AI审核时间 */
    @Schema(title = "AI审核时间")
    private Date aiAuditTime;

    /** 创建人 */
    @Schema(title = "创建人")
    private String createdBy;

    /** 创建时间 */
    @Schema(title = "创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    /** 更新人 */
    @Schema(title = "更新人")
    private String updatedBy;

    /** 更新时间 */
    @Schema(title = "更新时间")
    private LocalDate updatedTime;

    /** 删除标志 */
    @Schema(title = "删除标志")
    private Long deletedFlag;

    public Long getId() { return id; }

    public void setId(Long id) { this.id = id; }
    public String getCommentCode() { return commentCode; }
    public void setCommentCode(String commentCode) { this.commentCode = commentCode; }

    public Long getPostId() { return postId; }

    public void setPostId(Long postId) { this.postId = postId; }
    public Long getCommenterUserId() { return commenterUserId; }
    public void setCommenterUserId(Long commenterUserId) { this.commenterUserId = commenterUserId; }
    public Long getParentCommentId() { return parentCommentId; }
    public void setParentCommentId(Long parentCommentId) { this.parentCommentId = parentCommentId; }
    public Long getReplyToUserId() { return replyToUserId; }
    public void setReplyToUserId(Long replyToUserId) { this.replyToUserId = replyToUserId; }
    public String getCommentContent() { return commentContent; }
    public void setCommentContent(String commentContent) { this.commentContent = commentContent; }
    public Long getLikeCount() { return likeCount; }
    public void setLikeCount(Long likeCount) { this.likeCount = likeCount; }
    public Long getIsDraft() { return isDraft; }
    public void setIsDraft(Long isDraft) { this.isDraft = isDraft; }
    public Long getAiAuditStatus() { return aiAuditStatus; }
    public void setAiAuditStatus(Long aiAuditStatus) { this.aiAuditStatus = aiAuditStatus; }
    public String getAiAuditReason() { return aiAuditReason; }
    public void setAiAuditReason(String aiAuditReason) { this.aiAuditReason = aiAuditReason; }
    public Date getAiAuditTime() { return aiAuditTime; }
    public void setAiAuditTime(Date aiAuditTime) { this.aiAuditTime = aiAuditTime; }

    public void setCreatedBy(String createdBy)
    {
        this.createdBy = createdBy;
    }

    public String getCreatedBy()
    {
        return createdBy;
    }


    public void setCreatedTime(LocalDateTime createdTime)
    {
        this.createdTime = createdTime;
    }

    public LocalDateTime getCreatedTime()
    {
        return createdTime;
    }


    public void setUpdatedBy(String updatedBy)
    {
        this.updatedBy = updatedBy;
    }

    public String getUpdatedBy()
    {
        return updatedBy;
    }


    public void setUpdatedTime(LocalDate updatedTime)
    {
        this.updatedTime = updatedTime;
    }

    public LocalDate getUpdatedTime()
    {
        return updatedTime;
    }


    public void setDeletedFlag(Long deletedFlag)
    {
        this.deletedFlag = deletedFlag;
    }

    public Long getDeletedFlag()
    {
        return deletedFlag;
    }
}